package bio.five;

import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

/*
    bio模式下的端口转发思想:
        将一个客户端发送的消息推送个所有的客户端（模拟群聊）
    实现方式：
        服务端有一个存储所有在线客户端的集合，当一个客户端上线后就把这个客户端存到集合里面
        当一个客户端发送消息后，服务端将消息转发给所有客户端
 */
public class Server {
    public static final List<Socket> sockets = new ArrayList<>();

    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(9999);
            Socket socket = null;
            while (true) {
                //获取一个上线的客户端
                socket = serverSocket.accept();
                //将上线的客户端添加到sockets中
                sockets.add(socket);
                //服务端用一个线程来处理这个客户端的请求
                new HandlerAcceptThread(socket).start();
            }
        } catch (Exception e) {
            e.getStackTrace();
        }
    }
}
